﻿using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace HRP.Private.Cargos
{
    public partial class Editar : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack && Request.QueryString["id"] != null && Session["idclient"] != null && Session["EmpresaActual"] != null)
            {
                int cargoId = 0;
                Int32.TryParse(Request.QueryString["id"], out cargoId);                
                if (cargoId > 0)
                {
                    hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                    hrp_cargos cargoActual = Cargo_BLL.Instance.ObterCargo((int)Session["idclient"], empresa.id, cargoId);
                    if (cargoActual != null)
                    {
                        if (Session["EmpresaActual"] != null)
                        {
                            Session["VistaEmpresaId"] = empresa.id;
                        }
                        CarregarDepartamentos(cargoActual.id_departamento);
                        nomeTB.Text = cargoActual.cargo;
                        obsTB.Text = cargoActual.observacao;
                        formPanel.Visible = true;
                        msgPanel.Visible = false;
                        erroPanel.Visible = false;
                    }
                    else
                    {
                        formPanel.Visible = false;
                        msgPanel.Visible = false;
                        erroPanel.Visible = true;
                    }

                }
            }
            gravarBut.Click += gravarBut_Click;
            Page.PreRender += Page_PreRender;

        }

        void Page_PreRender(object sender, EventArgs e)
        {
            if (Session["EmpresaActual"] != null && Session["VistaEmpresaId"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                if (empresa.id != (int)Session["VistaEmpresaId"])//verifica se a empresa foi mudada
                {
                    formPanel.Visible = false;
                    msgPanel.Visible = false;
                    erroPanel.Visible = true;
                }
            }
        }

        void CarregarDepartamentos(int depId)
        {
            List<hrp_departamentos> listaDep = new List<hrp_departamentos>();
            if (Session["EmpresaActual"] != null)
            {
                hrp_empresas empresa = (hrp_empresas)Session["EmpresaActual"];
                listaDep.AddRange(Departamento_BLL.Instance.obterDepartamentosEmpresa((int)Session["idclient"], empresa.id, false, false).AsEnumerable());
            }
            departamentosList.DataSource = listaDep;
            departamentosList.DataBind();
            departamentosList.SelectedIndex = departamentosList.Items.IndexOf(departamentosList.Items.FindByValue(depId.ToString()));
        }

        void gravarBut_Click(object sender, EventArgs e)
        {
            if (!Page.IsValid)
                return;

            int depId = 0;
            Int32.TryParse(departamentosList.SelectedItem.Value, out depId);

            if (depId>0 && Session["idclient"] != null && Session["userid"] != null && Request.QueryString["id"] != null)
            {
                int id_cliente = (int)Session["idclient"];
                string userId = Session["userid"].ToString();
                int cargoId = 0;
                Int32.TryParse(Request.QueryString["id"], out cargoId);
                Cargo_BLL.Instance.ActualizarCargo(id_cliente, userId, cargoId, nomeTB.Text.Trim(), obsTB.Text.Trim(),depId);
                formPanel.Visible = false;
                msgPanel.Visible = true;
            }
        }
    }
}